Skip to content

Consolidate Lobbyside widgets and add second public widget#3853

Merged
sarupbanskota merged 2 commits intomainfrom
sarup/lobbyside-secondary-widget
Apr 21, 2026
Merged

Consolidate Lobbyside widgets and add second public widget#3853
sarupbanskota merged 2 commits intomainfrom
sarup/lobbyside-secondary-widget

Conversation

@sarupbanskota
Copy link
Copy Markdown
Member

@sarupbanskota sarupbanskota commented Apr 20, 2026

Summary

  • Adds the third Lobbyside embed (widget id b0d7150e-..., shown to all visitors)
  • Collapses the three near-identical components (LobbysideWidget, LobbysideStaffWidget, the new secondary one) into a single parametrized <LobbysideWidget @widgetId @audience /> invoked three times from application.hbs
  • Switches all instances to the preferred data-widget-id attribute
  • Re-syncs visitor data when auth state changes (previously synced only once on script load — post-load logins left visitor data stale)
  • Extracts the staff allowlist (vishaag, dronaxis) to utils/staff-allowlist and reuses it from services/beacon where the same usernames were inlined
  • Adds a typed window.Lobbyside declaration, removing the per-file eslint-disable any pragmas

Net: 9 files changed, 59 insertions, 152 deletions.

Test plan

  • Run app, confirm three <script id="lobbyside-widget-{uuid}"> tags are injected, all loading https://lobbyside.com/widget.js
  • As an anonymous visitor, the staff-audience instance (665ad94a-...) is not rendered; the other two are
  • As a staff or allowlisted user, all three are rendered and the HelpScout beacon is hidden (unchanged behavior)
  • After logging in mid-session, Lobbyside.setVisitor runs again with the new user's email/name/github

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 20, 2026

Test Results

  1 files  ±  0    1 suites  ±0   6m 31s ⏱️ + 1m 35s
704 tests +368  629 ✅ +321  63 💤 +55   9 ❌  - 8  3 🔥 ±0 
720 runs  +369  641 ✅ +321  63 💤 +55  13 ❌  - 7  3 🔥 ±0 

For more details on these failures and errors, see this check.

Results for commit 9b1a099. ± Comparison against base commit 31c101d.

This pull request removes 20 and adds 386 tests. Note that renamed tests count towards both.

 After execution of test: Acceptance | demo page | dark-mode-toggle: it shows current localStorage preference
 While executing test: Acceptance | affiliate-course-link-page | view: redirects to not found if course slug is invalid
 While executing test: Acceptance | concepts-test: progress for completed concepts is rendered properly
 While executing test: Acceptance | contests-test: time remaining status pill shows correct copy
 While executing test: Acceptance | course-page | complete-challenge-test: can complete course
 While executing test: Acceptance | course-page | complete-second-stage: passing stage 2 should show valid clickable stage 2 completion discount
 While executing test: Acceptance | course-page | view-course-stages-test: trying to view an invalid stage number redirects to active step
 While executing test: Acceptance | demo page | dark-mode-toggle: it shows current localStorage preference
 While executing test: Acceptance | manage-gift-page | view: renders page if gift is found
…
Chrome 143.0 ‑ Acceptance | affiliate-course-link-page | view: redirects to not found if course slug is invalid
Chrome 143.0 ‑ Acceptance | concepts-test: can navigate using arrow keys and select option using enter
Chrome 143.0 ‑ Acceptance | concepts-test: can navigate using j/k and select option using enter
Chrome 143.0 ‑ Acceptance | concepts-test: can select an option for a question using 1/2/3/4
Chrome 143.0 ‑ Acceptance | concepts-test: can select an option for a question using a/b/c/d
Chrome 143.0 ‑ Acceptance | concepts-test: can use Delete and Backspace keys in the feedback popup
Chrome 143.0 ‑ Acceptance | concepts-test: draft concepts are visible to concept author
Chrome 143.0 ‑ Acceptance | concepts-test: draft concepts are visible to staff
Chrome 143.0 ‑ Acceptance | concepts-test: navigating options wraps around the list for the current question card only
Chrome 143.0 ‑ Acceptance | concepts-test: navigating question options using arrow keys does not trigger scrolling
…

♻️ This comment has been updated with latest results.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 20, 2026

❌ 16 Tests Failed:

Tests completed Failed Passed Skipped
657 16 641 63
View the top 3 failed test(s) by shortest run time
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 After execution of test: Acceptance | referral-link-page | accept-referral-offer: offer accepted notice persists if user visits the link again
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 After execution of test: Acceptance | referrals-page | view-referrals: header should show subscribe button when not vip and has expired free usage grants
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 After execution of test: Acceptance | view-courses: it renders completed course cards
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 After execution of test: Acceptance | view-courses: it sorts course cards based on last push
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 After execution of test: Acceptance | view-team-test: team member can view team members when multiple members exist
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 After execution of test: Acceptance | view-user-profile: renders for current user
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 While executing test: Acceptance | referrals-page | view-referrals: header should show subscribe button when not vip and has expired free usage grants
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 While executing test: Acceptance | view-courses: it renders completed course cards
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 While executing test: Acceptance | view-courses: it sorts course cards based on last push
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 While executing test: Acceptance | view-team-test: team member can view team members when multiple members exist
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed. at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 29849
 While executing test: Acceptance | view-user-profile: renders for current user
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Cannot call `.lookup('service:store')` after the owner has been destroyed at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 176192
 After execution of test: Acceptance | referral-link-page | accept-referral-offer: offer accepted notice persists if user visits the link again
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Global error: Uncaught Error: Cannot call `.lookup('service:store')` after the owner has been destroyed at http://localhost:7357/assets/chunk.a635ac48690f82f76ebf.js, line 176192
 While executing test: Acceptance | referral-link-page | accept-referral-offer: offer accepted notice persists if user visits the link again
Stack Traces | 0s run time
No failure message available
Chrome 143.0::Acceptance | view-user-profile: renders for current user
Stack Traces | 0.175s run time
global failure: Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed.
Chrome 143.0::Acceptance | view-courses: it renders completed course cards
Stack Traces | 0.183s run time
global failure: Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed.
Chrome 143.0::Acceptance | view-team-test: team member can view team members when multiple members exist
Stack Traces | 0.243s run time
global failure: Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed.
Chrome 143.0::Acceptance | referrals-page | view-referrals: header should show subscribe button when not vip and has expired free usage grants
Stack Traces | 0.355s run time
global failure: Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed.
Chrome 143.0::Acceptance | view-courses: it sorts course cards based on last push
Stack Traces | 0.708s run time
global failure: Error: Attempted to call store.peekRecord(), but the store instance has already been destroyed.

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 20, 2026

Bundle Report

Changes will increase total bundle size by 942 bytes (0.0%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
client-array-push 39.47MB 942 bytes (0.0%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: client-array-push

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/chunk.*.js 860 bytes 3.44MB 0.03%
assets/chunk.*.js 82 bytes 41.61kB 0.2%

Files in assets/chunk.*.js:

  • ./utils/staff-allowlist.ts → Total Size: 229 bytes

  • ./services/beacon.ts → Total Size: 2.22kB

…mponent

Collapses LobbysideWidget, LobbysideStaffWidget, and the new
LobbysideSecondaryWidget (all near-identical copies) into one
<LobbysideWidget @widgetId @Audience> component invoked three times
from application.hbs.

- Derives the per-instance script DOM id from @widgetId
- Switches all three instances to the preferred data-widget-id attribute
- Adds a typed window.Lobbyside declaration (removes per-file
  eslint-disable any pragmas)
- Re-syncs visitor data when the user logs in/out via did-update keyed
  on authenticator.currentUserId (previously only synced on script
  onload, so post-load logins left visitor data stale)
- Extracts the staff allowlist (vishaag, dronaxis) to
  utils/staff-allowlist and reuses it from services/beacon, where the
  same usernames were inlined

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sarupbanskota sarupbanskota changed the title Add second public Lobbyside widget Consolidate Lobbyside widgets and add second public widget Apr 20, 2026
@sarupbanskota sarupbanskota enabled auto-merge April 21, 2026 05:16
@sarupbanskota sarupbanskota disabled auto-merge April 21, 2026 05:16
@sarupbanskota sarupbanskota merged commit a0c220e into main Apr 21, 2026
4 of 7 checks passed
@sarupbanskota sarupbanskota deleted the sarup/lobbyside-secondary-widget branch April 21, 2026 05:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant